home *** CD-ROM | disk | FTP | other *** search
/ Design It! 3D (IDG) / Design It! 3D.iso / setup / designit.ms_ / designit.bin
Encoding:
Text File  |  1995-07-06  |  10.4 KB  |  455 lines

  1. '**************************************************************************
  2. '*                        Design It! 3-D Setup
  3. '*
  4. '*                        Lovingly hand-crafted
  5. '*                        and polished by Cynthia Pettit, 
  6. '*                        with *lots* of help from John Alspaugh
  7. '*         Copyright 1993-1994 Virtus Corporation.  All Rights Reserved.
  8. '*
  9. '**************************************************************************
  10.  
  11. '''''$DEFINE DEBUG  ''Define for script development/debugging
  12.  
  13. ''Bitmap ID
  14. CONST LOGO         = 1
  15.  
  16. ''File Types
  17. GLOBAL RADIOBUTTON$     ''Option selection from OptFiles1 option dialog.
  18. GLOBAL PROGGROUP$    'Name of the program manager group
  19. GLOBAL ENORMOUS%    ''too big -- true or false? (1 or 0)
  20.  
  21. ''Dialog list symbol names
  22. GLOBAL CHECKSTATES$
  23. GLOBAL STATUSTEXT$
  24. GLOBAL DRIVETEXT$
  25. GLOBAL ERRORDLG%
  26. GLOBAL GREYEDLIST$
  27.  
  28. ''Potential error code for the magic exit
  29. GLOBAL POTENTIALERROR%
  30.  
  31.  
  32.  
  33. '' includes must be in this order!
  34. '$INCLUDE 'setupapi.inc'
  35. '$INCLUDE 'msdetect.inc'
  36. '$INCLUDE 'vutility.inc'      '' handy utility routines
  37. '$INCLUDE 'dsnlocal.inc'      '' the local definitions we use
  38. '$INCLUDE 'vsupport.inc'    '' our more general routines (requires vlocal.inc)
  39.  
  40.  
  41.  
  42. '$ifdef PROGRAM
  43. ''Dialog ID's
  44. CONST WELCOME_DLG        = 100
  45. CONST BILLBOARD0        = 110
  46. CONST BILLBOARD1        = 111
  47. CONST BILLBOARD2        = 112
  48. CONST BILLBOARD3        = 113
  49. CONST BILLBOARD4        = 114
  50. CONST BILLBOARD5        = 115
  51. CONST ASKQUIT_DLG        = 200
  52. CONST DESTPATH_DLG         = 300
  53. CONST EXITFAILURE_DLG    = 400
  54. CONST EBADSERIAL_DLG    = 401
  55. CONST ENOINSTALL_DLG      = 402
  56. CONST CORRUPT_FILES_DLG = 412
  57. CONST EXITQUIT_DLG        = 600
  58. CONST EXITSUCCESS_DLG    = 700    '' ok, and you should restart (but you don't have to)
  59. CONST EXITSUCCESSBYE_DLG= 701    '' ok, and you will now restart
  60. CONST WELCOMEHELP_DLG    = 900
  61. CONST CUSTINSTHELP_DLG    = 901
  62. CONST PATHHELP_DLG        = 902
  63. CONST PERSONALHELP_DLG    = 903
  64. CONST INSTALLHELP_DLG    = 904
  65. CONST INSTALL_DLG        = 6100
  66. CONST CUSTINST_DLG        = 6200
  67. CONST TOOBIG_DLG        = 6300
  68. CONST BADPATH_DLG        = 6400
  69. CONST PERSONALIZE_DLG    = 7500
  70. '$ELSE IF LIBRARY
  71. CONST WELCOME_DLG        = 150
  72. CONST ASKQUIT_DLG        = 250
  73. CONST DESTPATH_DLG        = 350
  74. CONST NO_WIN_3_1_DLG     = 410
  75. CONST WRONG_CPU_DLG     = 411
  76. CONST CORRUPT_FILES_DLG = 412
  77. CONST EXITFAILURE_DLG    = 450
  78. CONST EXITQUIT_DLG        = 650
  79. CONST EXITSUCCESS_DLG    = 750
  80. CONST WELCOMEHELP_DLG    = 950
  81. CONST PATHHELP_DLG        = 952
  82. CONST TOOBIG_DLG        = 6350
  83. CONST NOVRDIR_DLG        = 6351
  84. CONST LOOKFORFILE_DLG    = 6352
  85. CONST BADPATH_DLG        = 6400
  86. '$endif
  87.  
  88.  
  89. INIT:
  90.     CUIDLL$ = "mscuistf.dll"            'Custom user interface dll
  91.     HELPPROC$ = "FHelpDlgProc"          'Help dialog procedure
  92.     POTENTIALERROR% = 0
  93.     
  94.     VL_Initialize          '' init all the local vars
  95.     VL_InitDiskCosts      '' init the disk cost stuff
  96.     VL_InitDirNames     '' init the directory naming stuff
  97.     VL_InitReadmeFileNames
  98.  
  99.     VMaximizeFrame
  100.  
  101.     SetBitmap CUIDLL$, LOGO
  102.     SetTitle PRODUCTNAME$
  103.  
  104.     '' test that the system is up to our requirements.  If not, Bye!
  105.     sysOk% = VIsSystemAdequate()
  106.     IF sysOk% = 0 THEN
  107.         GOTO ENDITALL    '' byeeee!
  108.     END IF
  109.  
  110.     '' load INF file
  111.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  112.     IF szInf$ = "" THEN
  113.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILENAME$
  114.     END IF
  115.     ReadInfFile szInf$
  116.  
  117.     ''CustInst list symbols
  118.     CHECKSTATES$ = "CheckItemsState"
  119.     STATUSTEXT$  = "StatusItemsText"
  120.     DRIVETEXT$   = "DriveStatusText"
  121.     GREYEDLIST$  = "OptionsGreyed"
  122.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  123.         AddListItem CHECKSTATES$, "ON"
  124.     NEXT i%
  125.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  126.         AddListItem STATUSTEXT$, ""
  127.     NEXT i%
  128.     FOR i% = 1 TO 7 STEP 1     '' there are 7 items in DriveStatusText.  Always.
  129.         AddListItem DRIVETEXT$, ""
  130.     NEXT i%
  131.     ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  132.  
  133.     ENORMOUS% = 0
  134.     RADIOBUTTON$ = "1"
  135.  
  136.     VL_RecalcPath
  137.  
  138. '$IFDEF DEBUG
  139.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  140. '$ENDIF 'DEBUG
  141.  
  142. WELCOME:
  143.     sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOMEHELP_DLG, HELPPROC$)
  144.     IF sz$ = "CONTINUE" THEN
  145.         UIPop 1
  146.     ELSE
  147.         GOSUB ASKQUIT
  148.         GOTO WELCOME
  149.     END IF
  150.  
  151.     
  152. '$IFDEF OPTION
  153. '$ifdef 0
  154. ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  155. IF ENORMOUS% <> 0 THEN
  156.     RADIOBUTTON$ = "2"
  157.     AddListItem GREYEDLIST$, "1"   '' grey full install
  158.  ''    GOTO CUSTINST
  159. END IF
  160. '$endif
  161.  
  162. INSTALLOPT:
  163.     SetSymbolValue "RadioDefault", RADIOBUTTON$  '' set the button
  164.  
  165.     sz$ = UIStartDlg(CUIDLL$, INSTALL_DLG, "FRadioDlgProc", INSTALLHELP_DLG, HELPPROC$)
  166.     RADIOBUTTON$ = GetSymbolValue("ButtonChecked")
  167.  
  168.     ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  169.     IF sz$ = "CONTINUE" THEN
  170.         UIPop 1
  171.         IF RADIOBUTTON$ = "1" THEN
  172.             GOSUB GETPATH
  173.             GOTO INSTALL
  174.         ELSEIF RADIOBUTTON$ = "2" THEN
  175.             '' we get the path within the custinst area
  176.             GOTO CUSTINST
  177.         ELSE
  178.              GOSUB GETPATH
  179.             GOTO INSTALL
  180.         END IF
  181.     ELSEIF sz$ = "REACTIVATE" THEN
  182.         GOTO INSTALLOPT
  183.     ELSEIF sz$ = "EXIT" THEN
  184.         GOSUB ASKQUIT
  185.         GOTO INSTALLOPT
  186.     ELSE
  187.         UIPop 1
  188.         GOTO CUSTINST
  189.     END IF
  190.  
  191.  
  192.  
  193. CUSTINST:
  194.     ''Start up the custom installation dialog box
  195.     sz$ = UIStartDlg(CUIDLL$, CUSTINST_DLG, "FCustInstDlgProc", CUSTINSTHELP_DLG, HELPPROC$)
  196.  
  197.     i% = VL_DoCheckItems(sz$)
  198.     IF i% = 1 THEN
  199.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  200.         GOTO CUSTINST
  201.     END IF
  202.  
  203.     IF sz$ = "CONTINUE" THEN
  204.         ''Install only if it will fit.
  205.         IF ENORMOUS% <> 0 THEN
  206.             GOSUB TOOBIG
  207.             GOTO CUSTINST
  208.         ENDIF
  209.  
  210.         UIPop 1      ''Kill the dialog box
  211.         GOTO INSTALL 
  212.     ELSEIF sz$ = "PATH" THEN
  213.         GOTO GETPATH
  214.     ELSEIF sz$ = "REACTIVATE" THEN
  215.         VL_RecalcPath
  216.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  217.         GOTO CUSTINST
  218.     ELSEIF sz$ = "BACK" THEN
  219.         UIPop 1
  220.         GOTO INSTALLOPT
  221.     ELSE
  222.         GOSUB ASKQUIT
  223.         GOTO CUSTINST
  224.     END IF
  225.  
  226.  
  227. '$ENDIF 'OPTION
  228.  
  229.  
  230.  
  231. GETPATH:
  232.  
  233. '$IFDEF LIBRARY
  234.     i% = VFindExe(EXEFILENAME$, DATAFILEEXT$, DESTDIRNAME$)
  235.  
  236.   NOEXE:
  237.     IF i% = 0 THEN
  238.         DESTDIRNAME$ = WINDRIVE$ + ":\" + DEFDIRNAME$    '' fallback
  239.         sz$ = UIStartDlg(CUIDLL$, NOVRDIR_DLG, "FInfo0DlgProc", 0, "")
  240.         IF sz$ = "REACTIVATE" THEN
  241.             GOTO NOEXE
  242.         END IF
  243.         UIPop 1
  244.     END IF
  245. '$ENDIF 'LIBRARY
  246.  
  247.     VL_RecalcPath
  248.  
  249.     SetSymbolValue "EditTextIn", DESTDIRNAME$
  250.     SetSymbolValue "EditFocus", "END"
  251. GETPATHL1:
  252.     sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", PATHHELP_DLG, HELPPROC$)
  253.  
  254.     IF sz$ = "CONTINUE" THEN
  255.         olddest$ = DESTDIRNAME$
  256.         DESTDIRNAME$ = GetSymbolValue("EditTextOut")
  257.  
  258.         ''Validate new path.
  259.         IF IsDirWritable(DESTDIRNAME$) = 0 THEN
  260.             GOSUB BADPATH
  261.             GOTO GETPATHL1
  262.         END IF
  263.         UIPop 1
  264.  
  265.         'Truncate display if too long.
  266.         IF LEN(DEST$) > 23 THEN
  267.             ReplaceListItem DRIVETEXT$, 7, MID$(DESTDIRNAME$, 1, 23)+"..."
  268.         ELSE
  269.             ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  270.         END IF
  271.  
  272.         ''Recalc if path changed.
  273.         IF (olddest$ <> DESTDIRNAME$) AND (olddest$ <> DESTDIRNAME$+"\") AND (olddest$+"\" <> DESTDIRNAME$) THEN
  274.             VL_RecalcPath
  275.             ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  276.         END IF
  277.  
  278.         olddest$ = ""
  279. '$IFDEF OPTION
  280.         IF RADIOBUTTON$ = "1" THEN  '' this is the quicky option, right?
  281.             '' check that the new path does not make us need too much disk space
  282.             IF ENORMOUS% <> 0 THEN
  283.                 GOSUB TOOBIG    '' not enough disk space
  284.  
  285.                 RADIOBUTTON$ = "2"
  286.                 GOTO CUSTINST   '' custom install necessary.
  287.             END IF
  288.             '' otherwise, keep going to the next section
  289.         ELSEIF RADIOBUTTON$ = "2" THEN
  290.             GOTO CUSTINST    '' return to the custom install
  291.         ELSE
  292.             FOR i% = 1 TO N_CHECKBOXES STEP 1
  293.                 ReplaceListItem CHECKSTATES$, i%, "OFF"
  294.             NEXT i%
  295.             GOTO INSTALL
  296.         END IF
  297.  
  298. '$ELSE
  299.         IF ENORMOUS% <> 0 THEN
  300.             GOSUB TOOBIG    '' not enough disk space
  301.             GOTO GETPATHL1   '' try again
  302.         END IF
  303. '$ENDIF '' OPTION
  304.  
  305.         GOTO INSTALL
  306.  
  307.  
  308.     ELSEIF sz$ = "REACTIVATE" THEN
  309. ''        VL_RecalcPath
  310. ''        ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  311.         GOTO GETPATHL1
  312.     ELSEIF sz$ = "EXIT" THEN
  313.         GOSUB ASKQUIT
  314.         GOTO GETPATHL1
  315.     ELSEIF sz$ = "BACK" THEN
  316.         UIPop 1
  317.  
  318. '$IFDEF OPTION
  319.         IF (RADIOBUTTON$ = "1") AND (ENORMOUS% = 0) THEN
  320.             GOTO INSTALLOPT
  321.         ELSEIF RADIOBUTTON = "2" THEN
  322.             GOTO CUSTINST
  323.         ELSE
  324.             GOTO INSTALLOPT
  325.         END IF
  326. '$ELSE
  327.         GOTO WELCOME
  328. '$ENDIF '' OPTION
  329.  
  330.     ELSE
  331.         GOTO GETPATHL1
  332.     END IF
  333.  
  334.  
  335. INSTALL:
  336.  
  337.     VL_DoTheInstall
  338.  
  339. '$IFDEF PROGRAM
  340.     IF VL_ShouldWeSerialize() = 1 THEN
  341.         GOSUB SERIALIZE
  342.     END IF
  343. '$ENDIF 'PROGRAM
  344.  
  345.     VL_MakeTheAppIcons
  346.  
  347.     VL_MakeTheReadmeIcons
  348.  
  349. QUIT:
  350.     ON ERROR GOTO ERRQUIT
  351.  
  352.     IF ERR = 0 THEN
  353.         Restart% = RestartListEmpty()
  354.         IF Restart% = 0 THEN
  355.             ERRORDLG% = EXITSUCCESSBYE_DLG
  356.         ELSE
  357.             ERRORDLG% = EXITSUCCESS_DLG
  358.         END IF
  359.     ELSEIF ERR = STFQUIT THEN
  360.         ERRORDLG% = EXITQUIT_DLG
  361.     ELSEIF ERR = ENOINSTALL THEN
  362.         ERRORDLG% = ENOINSTALL_DLG
  363.     ELSE
  364.         ERRORDLG% = EXITFAILURE_DLG
  365.     END IF
  366. QUITL1:
  367.     sz$ = UIStartDlg(CUIDLL$, ERRORDLG%, "FInfo0DlgProc", 0, "")
  368.     IF sz$ = "REACTIVATE" THEN
  369.         GOTO QUITL1
  370.     END IF
  371.     UIPop 1
  372.  
  373.     IF ERR = 0 THEN
  374.         VL_ShowIconsOkay
  375.     END IF
  376.  
  377.     GOTO ENDITALL
  378.  
  379. ERRQUIT:
  380.     sz$ = UIStartDlg(CUIDLL$, CORRUPT_FILES_DLG, "FInfo0DlgProc", 0, "")
  381.     IF sz$ = "REACTIVATE" THEN
  382.         GOTO ERRQUIT
  383.     END IF
  384.     UIPop 1
  385.     GOTO ENDITALL
  386.  
  387. ENDITALL:
  388.     END ''That's all, folks!
  389.  
  390.  
  391.  
  392. TOOBIG:
  393.     sz$ = UIStartDlg(CUIDLL$, TOOBIG_DLG, "FInfo0DlgProc", 0, "")
  394.     IF sz$ = "REACTIVATE" THEN
  395.         VL_RecalcPath
  396.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  397.         GOTO TOOBIG
  398.     END IF
  399.     UIPop 1
  400.     RETURN
  401.  
  402.  
  403.  
  404. BADPATH:
  405.     sz$ = UIStartDlg(CUIDLL$, BADPATH_DLG, "FInfo0DlgProc", 0, "")
  406.     IF sz$ = "REACTIVATE" THEN
  407.         VL_RecalcPath
  408.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  409.         GOTO BADPATH
  410.     END IF
  411.     UIPop 1
  412.     RETURN
  413.  
  414.  
  415.  
  416. ASKQUIT:
  417.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT_DLG, "FQuitDlgProc", 0, "")
  418.  
  419.     IF sz$ = "EXIT" THEN
  420.         UIPopAll
  421.         ERROR STFQUIT
  422.     ELSEIF sz$ = "REACTIVATE" THEN
  423.         GOTO ASKQUIT
  424.     ELSE
  425.         UIPop 1
  426.     END IF
  427.     RETURN
  428.  
  429.  
  430. 'IFDEF SERIAL
  431. SERIALIZE:
  432.     SetSymbolValue "ProgramLocation", VMakePath(DESTDIRNAME$,EXEFILENAME$)
  433.     sz$ = UIStartDlg(CUIDLL$, PERSONALIZE_DLG, "FInitDlgProc", PERSONALHELP_DLG, HELPPROC$)
  434.  
  435.     IF sz$ = "EXIT" THEN
  436.         POTENTIALERROR% = EBADSERIAL
  437.         GOSUB ASKQUIT
  438.         POTENTIALERROR% = 0
  439.         GOTO SERIALIZE
  440.     ELSEIF sz$ = "REACTIVATE" THEN
  441.         GOTO SERIALIZE
  442.     ELSEIF sz$ = "CONTINUE" THEN
  443.         UIPop 1
  444.     ELSE
  445.         POTENTIALERROR% = EBADSERIAL
  446.         ERROR EBADSERIAL
  447.     END IF
  448.     RETURN
  449. 'ENDIF 'SERIAL
  450.  
  451.  
  452.  
  453.  
  454.  
  455.